package com.example.sbeducation.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.sbeducation.dto.ChatMessageDTO;
import com.example.sbeducation.entity.ChatMessage;

import java.util.List;

/**
 * 聊天消息服务接口
 */
public interface ChatMessageService {

  /**
   * 发送消息
   * 
   * @param chatMessageDTO 消息信息
   * @return 消息ID
   */
  Long sendMessage(ChatMessageDTO chatMessageDTO);

  /**
   * 获取聊天历史记录
   * 
   * @param senderId   发送者ID
   * @param receiverId 接收者ID
   * @param page       页码
   * @param size       每页数量
   * @return 消息分页列表
   */
  Page<ChatMessage> getChatHistory(Long senderId, Long receiverId, Integer page, Integer size);

  /**
   * 标记消息为已读
   * 
   * @param messageId 消息ID
   */
  void markAsRead(Long messageId);

  /**
   * 标记用户所有未读消息为已读
   * 
   * @param receiverId 接收者ID
   */
  void markAllAsRead(Long receiverId);

  /**
   * 获取用户未读消息数量
   * 
   * @param receiverId 接收者ID
   * @return 未读消息数量
   */
  Integer getUnreadCount(Long receiverId);

  /**
   * 获取用户未读消息
   * 
   * @param receiverId 接收者ID
   * @return 未读消息列表
   */
  List<ChatMessage> getUnreadMessages(Long receiverId);
}